{
 "cells": [
  {
   "cell_type": "code",
   "id": "initial_id",
   "metadata": {
    "collapsed": true,
    "ExecuteTime": {
     "end_time": "2025-01-13T10:09:43.100840Z",
     "start_time": "2025-01-13T10:09:41.635699Z"
    }
   },
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "from sklearn.decomposition import PCA\n",
    "from sklearn.cluster import KMeans\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.metrics import silhouette_score"
   ],
   "outputs": [],
   "execution_count": 1
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-13T10:09:50.356147Z",
     "start_time": "2025-01-13T10:09:45.137073Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 读取四张表的数据\n",
    "#读取了订单和产品id的关联，csv比较大\n",
    "prior = pd.read_csv(\"./data/instacart/order_products__prior.csv\")"
   ],
   "id": "f39e8bf41583c94e",
   "outputs": [],
   "execution_count": 2
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-13T10:11:37.643239Z",
     "start_time": "2025-01-13T10:10:48.955897Z"
    }
   },
   "cell_type": "code",
   "source": [
    "import matplotlib.pyplot as plt\n",
    "plt.rcParams['font.sans-serif'] = ['SimHei']\n",
    "plt.plot(prior['order_id'],prior['product_id'],'o')\n",
    "plt.show() #????"
   ],
   "id": "b4c0620437654920",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjAAAAGrCAYAAADeuK1yAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAJK5JREFUeJzt3Q2wVdV5P/6HFwERedVgQIqgaNUCRl4ktIRBGTGoqEgaCa3WhBpDqTQjTIOJOmkzYmwFZX5gfCukophAVexYRREx1cFEGYIQRCcNVoTBokFeI5Lx/Gct594/b4n3XhBZ934+M9t7937OPveczb53f11nrbUbVSqVSgAAFKTxZ/0CAABqS4ABAIojwAAAxRFgAIDiCDAAQHEEGACgOAIMAFAcAQYAKE7TqIc++uij2LBhQxx77LHRqFGjz/rlAAA1kObW3bZtW3Tq1CkaN27c8AJMCi9dunT5rF8GAFAH69atixNPPLHhBZjU8lJ1AFq3bv1ZvxwAoAa2bt2aGyCqruMNLsBUfWyUwosAAwBlqUn3D514AYDiCDAAQHEEGACgOAIMAFAcAQYAKI4AAwAUR4ABAOp3gLnuuuvy2Oyq5ZRTTsnbV61aFf369Yt27drFpEmT8lTAVZ5//vk4/fTT47jjjoupU6fu9Xzz58+Prl275imD586du1dtxowZ0bFjx+jevXssXrz44N4lAFCv1Goiu1deeSWeeOKJGDhwYF5v0qRJ7Nq1Ky6++OIYNmxYPPzwwznkzJ49O66++urYtGlTjBgxIq6//voYPXp0XHHFFfGFL3whhgwZkkPPmDFjclA555xzYuTIkXH22WfHaaedFgsXLoyJEyfm5zv++OPjr/7qr+Lll1+ODh06xGfppO888Zn+fAA40owf1CkmXviFw/5zG1X2bC75I37/+9/nALF+/fpo1apV9fbHHnssvv71r8fbb78dLVu2jBUrVsTf/d3fxQsvvBB33HFH3H333bF69ercYrNgwYKYN29ezJkzJ/7hH/4h1qxZE0899VR+njvvvDMHnh/84Adx6aWXxgknnBA/+tGPcu3b3/52nHnmmTF27NgaT0Xcpk2b2LJlyyGbiVd4AYA/7M1bL4yDVZvrd40/Qlq5cmW+y/NZZ50VRx99dFxwwQXx1ltv5cAyYMCAHF6SXr165cCSpFpqbamaErh///6xbNmy6tq5555b/fw1rR1IagVKb3rP5VASXgDgyLpW1jjApFCSPt554IEH4tVXX42mTZvGNddck8NCt27dqh+Xwkr6aGnz5s371VKaSneKTupaO5ApU6bkxFa1HMo7UQsvAFAz//rE8jjiAkzqr5L6wHzxi1+MHj16xMyZM+OZZ57JrTLNmzff67EtWrSInTt35pCzZ61qe1LX2oFMnjw5NzdVLeku1ADA4fX//vsPNzYcanW+G/XnPve5HF5SX5XUIXdP27Zti2bNmkX79u1zv5Z9tyd1rR1ICjv7higAoP6qcQtMGh790EMPVa8vXbo0GjduHD179szfV1m7dm3uk5JCSBpavWdt+fLl0blz5/x9XWsAADUOML17947vfe978eyzz8bTTz8d1157bVx55ZVx/vnn5z4rs2bNyo+75ZZbYujQobkfTBpC/eKLL8aiRYti9+7dcdttt+Xh1snll1+eh0mnzsHbt2+P6dOnV9dGjRqVP6JKI57eeeeduP/++6trAAA1/ggpzcXyq1/9KgePFE7Segorqb/Kfffdl+d5Sa00qVVmyZIleZ80ed20adNi+PDheeh127Zt8xwxVYFowoQJ0bdv39zHJfWrGTduXK6leWXScOu0LTnvvPPyPDEAALWaB+aTbNy4MQ91TkOq951wLn2slOZ8GTRo0F5zyFSNbkotLYMHD96vn0uavG7Hjh25VjUU+3DPA2MUEgAcnvlganP9PmQB5kgiwABA/Q4wbuYIABRHgAEAiiPAAADFEWAAgOIIMABAcQQYAKA4AgwAUBwBBgAojgADABRHgAEAiiPAAADFEWAAgOIIMABAcQQYAKA4AgwAUBwBBgAojgADABRHgAEAiiPAAADFEWAAgOIIMABAcQQYAKA4AgwAUBwBBgAojgADABRHgAEAiiPAAADFEWAAgOIIMABAcQQYAKA4AgwAUBwBBgAojgADABRHgAEAiiPAAADFEWAAgOIIMABAcQQYAKA4AgwAUBwBBgAojgADABRHgAEAiiPAAADFEWAAgOIIMABAcQQYAKA4AgwAUBwBBgAojgADABRHgAEAiiPAAADFEWAAgOIIMABAcQQYAKA4AgwAUBwBBgBoOAHmggsuiNmzZ+fvn3/++Tj99NPjuOOOi6lTp+71uPnz50fXrl2jU6dOMXfu3L1qM2bMiI4dO0b37t1j8eLFe9W++93vRrt27aJXr17x6quv1vVlAgD1UJ0CzIMPPhgLFy7M32/atClGjBgRo0ePjqVLl+bac889l2urVq2KMWPGxI033pgff9NNN8Xrr7+ea2l94sSJcc8998ScOXNi7Nix8d577+Xa3XffnZfHH388fvCDH8QVV1wRH3744aF71wBAwwowv/3tb+P666+P0047La+nwJJaV1JI6dGjRw4p999/f67dd999MWTIkBxOevbsGePHj48HHngg1+6666646qqr4pJLLomBAwfmr48++mh1LYWbQYMG5XCUftbPfvazQ/vOAYCGE2BSeLnssstiwIABeX3FihU5pDRq1Civ9+/fP5YtW1ZdO/fcc6v3rUmtUqnEypUr/+B+B7Jr167YunXrXgsAUH/VKsCkj4aeffbZuO2226q3pbDQrVu36vXWrVvHhg0b6lzbvn17fPTRR39wvwOZMmVKtGnTpnrp0qVLbd4WAFBfA8wHH3wQ3/zmN/PHO8cee2z19qZNm0bz5s2r11u0aBE7d+6scy1tT/7QfgcyefLk2LJlS/Wybt26mr4tAKBAH6eFGvjnf/7n6NevX1x44YV7bW/fvn3uyFtl27Zt0axZszrXjj766LykWmp52Xe/A0lhZ8/AAwDUbzUOMA899FAOFW3bts3rqUXkpz/9af4+dcKtsnz58ujcuXP+PgWeNDLpG9/4xh+snXfeefvV+vbtm2snn3xyda2q0zAAQI0/Qvrv//7vPCz6l7/8ZV7S6KB/+qd/irfeeitefPHFWLRoUezevTv3jxk2bFje5/LLL4+HH344d8pNfVumT59eXRs1alTMnDkz1q9fH++8804eubRn7Yc//GHuJ/PGG2/kuWSqagAANW6BOfHEE/dab9WqVZ64Li3Tpk2L4cOH522phaZqgrvevXvHhAkTcotK6seShlmPGzcu1y6++OKYN29e3paklpiRI0fm71NfmwULFuSfmUYYpWHYffr0OZTvGwAoWKNKGrd8CKxduzbWrFmT525JQWZPq1evzi0tgwcP3q8vy8svvxw7duzItaqh2EkaiZRadlLfljSMujZSy00ajZQ69Fb1o6mrk77zxEHtDwANyZu37t1X9tO6fte4BeaTpGHPew593tMZZ5yRlwNJfWEOpHHjxjkMAQDsy80cAYDiCDAAQHEEGACgOAIMAFAcAQYAKI4AAwAUR4ABAIojwAAAxRFgAIDiCDAAQHEEGACgOAIMAFAcAQYAKI4AAwAUR4ABAIojwAAAxRFgAIDiCDAAQHEEGACgOAIMAFAcAQYAKI4AAwAUR4ABAIojwAAAxRFgAIDiCDAAQHEEGACgOAIMAFAcAQYAKI4AAwAUR4ABAIojwAAAxRFgAIDiCDAAQHEEGACgOAIMAFAcAQYAKI4AAwAUR4ABAIojwAAAxRFgAIDiCDAAQHEEGACgOAIMAFAcAQYAKI4AAwAUR4ABAIojwAAAxRFgAIDiCDAAQHEEGACgOAIMAFAcAQYAKI4AAwAUR4ABABpGgHn//ffj5z//eWzevPnQvyIAgEMdYObNmxcnnXRSjB07Nk488cS8nqxatSr69esX7dq1i0mTJkWlUqne5/nnn4/TTz89jjvuuJg6depezzd//vzo2rVrdOrUKebOnbtXbcaMGdGxY8fo3r17LF68uLYvFQCop2oVYLZs2RLjxo2Ln/3sZ7Fy5cocMFJY2bVrV1x88cXRp0+feOWVV2L16tUxe/bsvM+mTZtixIgRMXr06Fi6dGk8+OCD8dxzz1WHnjFjxsSNN94YCxcujJtuuilef/31XEvrEydOjHvuuSfmzJmTA9N77733aRwDAKA+B5itW7fGHXfcEb169crrZ599dg4VTz75ZA43qXXl5JNPjltuuSXuv//+/JgUWFLrSgopPXr0yCGlqnbffffFkCFDcjjp2bNnjB8/Ph544IFcu+uuu+Kqq66KSy65JAYOHJi/Pvroowd8XSlApde25wIA1F+1CjBdunTJLSbJ7t27Y9q0aXHZZZfFihUrYsCAAdGyZctcSwEntcIkqZZCSqNGjfJ6//79Y9myZdW1c889t/r5a1rb15QpU6JNmzbVS3qdAED9VadOvClcnHDCCfHUU0/F9OnTc4tHt27dqusprDRp0iR38t231rp169iwYUP+vq61fU2ePDm3AFUt69atq8vbAgDqc4BJLSxPP/10/kgoffzTtGnTaN68+V6PadGiRezcuXO/WtX2pK61faXHpYCz5wIA1F91CjCphSV12P3xj38cjzzySLRv3z531t3Ttm3bolmzZvvVqrYnda0BAA1brQJMGg6dRh1VSYEihZk0RDqNMKqydu3a3LE2hZA0tHrP2vLly6Nz5875+7rWAICGrVYB5tRTT83DmtOS+pnccMMNcf7558fw4cNzn5VZs2blx6VRSEOHDs39YNIQ6hdffDEWLVqUO/7edtttMWzYsPy4yy+/PB5++OE8JHv79u25P01VbdSoUTFz5sxYv359vPPOO3nkUlUNAGjYahVgPv/5z+eJ5+68884488wzc5+Uf//3f8/9VdKQ6DQMOk1Wt2DBgvjhD3+Y90nrabRSCjlpUro0z8v3vve9XOvdu3dMmDAh+vbtm1tXUuBJ88wkaV6Z8847L/ezSZ15v/CFL8TIkSM/jWMAABSmUWXPKXMP0saNG/NQ5zSkukOHDnvV0sdKa9asiUGDBkWrVq32qqUh16mlZfDgwfv1c3n55Zdjx44duVY1FPuTpNagNJw6jUg62A69J33niYPaHwAakjdvvbDO+9bm+n1IA8yRQoABgPodYNyNGgAojgADABRHgAEAiiPAAADFEWAAgOIIMABAcQQYAKA4AgwAUBwBBgAojgADABRHgAEAiiPAAADFEWAAgOIIMABAcQQYAKA4AgwAUBwBBgAojgADABRHgAEAiiPAAADFEWAAgOIIMABAcQQYAKA4AgwAUBwBBgAojgADABRHgAEAiiPAAADFEWAAgOIIMABAcQQYAKA4AgwAUBwBBgAojgADABRHgAEAiiPAAADFEWAAgOIIMABAcQQYAKA4AgwAUBwBBgAojgADABRHgAEAiiPAAADFEWAAgOIIMABAcQQYAKA4AgwAUBwBBgAojgADABRHgAEAiiPAAADFEWAAgOIIMABAcQQYAKB+B5gFCxZE9+7do2nTpnHWWWfFa6+9lrevWrUq+vXrF+3atYtJkyZFpVKp3uf555+P008/PY477riYOnXqXs83f/786Nq1a3Tq1Cnmzp27V23GjBnRsWPH/PMWL158cO8SAGiYAeZ//ud/4uqrr45bb7011q9fH6eeemqMHTs2du3aFRdffHH06dMnXnnllVi9enXMnj0777Np06YYMWJEjB49OpYuXRoPPvhgPPfcc9WhZ8yYMXHjjTfGwoUL46abborXX38919L6xIkT45577ok5c+bkn/Pee+99WscAAKivASa1tqTw8pd/+Ze5ZeRb3/pWLF++PJ588snYsmVLbl05+eST45Zbbon7778/75MCS2pdSSGlR48eOaRU1e67774YMmRIDic9e/aM8ePHxwMPPJBrd911V1x11VVxySWXxMCBA/PXRx999NM6BgBAfQ0wF110UVxzzTXV66m1JIWSFStWxIABA6Jly5Z5e69evXIrTJJqKaQ0atQor/fv3z+WLVtWXTv33HOrn6+mtQNJrUBbt27dawEA6q86deL98MMP4/bbb49rr702h4Vu3bpV11JYadKkSWzevHm/WuvWrWPDhg35+7rWDmTKlCnRpk2b6qVLly51eVsAQH0OMDfffHMcc8wx+eOf1KG3efPme9VbtGgRO3fu3K9WtT2pa+1AJk+enD/GqlrWrVtXl7cFABSiaW13SCOC0gihl156KY466qho37597pC7p23btkWzZs1yLXXk3Xd7UtfagaSws2+IAgDqr1q1wKxduzaPKEoB5owzzsjb0vDpNMJoz8ekPikphOxbS51+O3fufMD9aloDAKhxgPnd736XO/KmEUGXXXZZbN++PS+DBg3KfVZmzZqVH5dGIQ0dOjT3g0lDqF988cVYtGhR7N69O2677bYYNmxYftzll18eDz/8cKxcuTI/z/Tp06tro0aNipkzZ+bh2u+8804euVRVAwCo8UdITz/9dB5dlJZ77713rxaXNCQ6tcykSewaN24cS5YsybU0ed20adNi+PDh0apVq2jbtm31HDG9e/eOCRMmRN++fXMflzSiady4cbmW5pWZN29e3pacd955MXLkyEP93gGAQjWq7Dlt7kHYuHFjHuqchlR36NBhr1oKOWvWrMmtNSnI7CkFotTSMnjw4P36ubz88suxY8eOXKsail0TqUUojUZKHXrTCKaDcdJ3njio/QGgIXnz1gvrvG9trt+HLMAcSQQYAKjfAcbNHAGA4ggwAEBxBBgAoDgCDABQHAEGACiOAAMAFEeAAQCKI8AAAMURYACA4ggwAEBxBBgAoDgCDABQHAEGACiOAAMAFEeAAQCKI8AAAMURYACA4ggwAEBxBBgAoDgCDABQHAEGACiOAAMAFEeAAQCKI8AAAMURYACA4ggwAEBxBBgAoDgCDABQHAEGACiOAAMAFEeAAQCKI8AAAMURYACA4ggwAEBxBBgAoDgCDABQHAEGACiOAAMAFEeAAQCKI8AAAMURYACA4ggwAEBxBBgAoDgCDABQHAEGACiOAAMAFEeAAQCKI8AAAMURYACA4ggwAEBxBBgAoDgCDABQHAEGACiOAAMAFEeAAQCKI8AAAPU/wLz77rvRrVu3ePPNN6u3rVq1Kvr16xft2rWLSZMmRaVSqa49//zzcfrpp8dxxx0XU6dO3eu55s+fH127do1OnTrF3Llz96rNmDEjOnbsGN27d4/FixfX7d0BAPVS49qGl4suumiv8LJr1664+OKLo0+fPvHKK6/E6tWrY/bs2bm2adOmGDFiRIwePTqWLl0aDz74YDz33HPVoWfMmDFx4403xsKFC+Omm26K119/PdfS+sSJE+Oee+6JOXPmxNixY+O99947tO8cAGgYAeaKK66Ir33ta3tte/LJJ2PLli25deXkk0+OW265Je6///5cS4Elta6kkNKjR48cUqpq9913XwwZMiSHk549e8b48ePjgQceyLW77rorrrrqqrjkkkti4MCB+eujjz566N41ANBwAsy9994b11133V7bVqxYEQMGDIiWLVvm9V69euVWmKpaCimNGjXK6/37949ly5ZV184999zq56lp7UBSK9DWrVv3WgCA+qtWASb1fdlXCgt7bk9hpUmTJrF58+b9aq1bt44NGzYccL+a1g5kypQp0aZNm+qlS5cutXlbAEBDG4XUtGnTaN68+V7bWrRoETt37tyvVrX9QPvVtHYgkydPzh9jVS3r1q072LcFABzBmh7sE7Rv3z53yN3Ttm3bolmzZrmWOvLuu71qv7rUDiSFnX1DFABQfx10C0waPp1GGFVZu3Zt7pOSQsi+teXLl0fnzp0PuF9NawAABx1gvvSlL+U+K7NmzcrraRTS0KFDcz+YNIT6xRdfjEWLFsXu3bvjtttui2HDhuXHXX755fHwww/HypUrY/v27TF9+vTq2qhRo2LmzJmxfv36eOedd/LIpaoaAMBBf4SU+qukIdFprpc0iV3jxo1jyZIluZYmr5s2bVoMHz48WrVqFW3btq2eI6Z3794xYcKE6Nu3b+7jkoZZjxs3LtfSvDLz5s3L25LzzjsvRo4cebAvFQCoJxpV9pw29yBs3LgxD3VOQ6o7dOiwVy19rLRmzZoYNGhQDjJ7SkOuU0vL4MGD9+vn8vLLL8eOHTtyrWoodk2kFqE0Gil16E0jmA7GSd954qD2B4CG5M1bL6zzvrW5fh+yAHMkEWAAoH4HGDdzBACKI8AAAMURYACA4ggwAEBxBBgAoDgCDABQHAEGACiOAAMAFEeAAQCKI8AAAMURYACA4ggwAEBxBBgAoDgC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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 6
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-13T10:12:09.009476Z",
     "start_time": "2025-01-13T10:12:08.964261Z"
    }
   },
   "cell_type": "code",
   "source": [
    "#产品id，与过道的对应\n",
    "products = pd.read_csv(\"./data/instacart/products.csv\")"
   ],
   "id": "bdd1e79a37520f10",
   "outputs": [],
   "execution_count": 7
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-13T10:12:13.961070Z",
     "start_time": "2025-01-13T10:12:12.894400Z"
    }
   },
   "cell_type": "code",
   "source": [
    "#订单id和用户id的对应，csv比较大\n",
    "orders = pd.read_csv(\"./data/instacart/orders.csv\")"
   ],
   "id": "30e13a34c0d6ab26",
   "outputs": [],
   "execution_count": 8
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-13T10:12:17.865830Z",
     "start_time": "2025-01-13T10:12:17.861762Z"
    }
   },
   "cell_type": "code",
   "source": [
    "#超市的过道，过道放的产品的品类\n",
    "aisles = pd.read_csv(\"./data/instacart/aisles.csv\")"
   ],
   "id": "4f82ea3243361424",
   "outputs": [],
   "execution_count": 9
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-13T10:12:32.344261Z",
     "start_time": "2025-01-13T10:12:32.334904Z"
    }
   },
   "cell_type": "code",
   "source": "prior.head()  #订单id，产品id，下面只需要掌握订单和产品的关联即可",
   "id": "bdd3ef284b265a26",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "   order_id  product_id  add_to_cart_order  reordered\n",
       "0         2       33120                  1          1\n",
       "1         2       28985                  2          1\n",
       "2         2        9327                  3          0\n",
       "3         2       45918                  4          1\n",
       "4         2       30035                  5          0"
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>order_id</th>\n",
       "      <th>product_id</th>\n",
       "      <th>add_to_cart_order</th>\n",
       "      <th>reordered</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2</td>\n",
       "      <td>33120</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>28985</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>9327</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2</td>\n",
       "      <td>45918</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2</td>\n",
       "      <td>30035</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 10
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-13T10:12:37.166789Z",
     "start_time": "2025-01-13T10:12:37.159636Z"
    }
   },
   "cell_type": "code",
   "source": "products.head() #产品id，产品名称，过道id ",
   "id": "94900a9d2a20a10c",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "   product_id                                       product_name  aisle_id  \\\n",
       "0           1                         Chocolate Sandwich Cookies        61   \n",
       "1           2                                   All-Seasons Salt       104   \n",
       "2           3               Robust Golden Unsweetened Oolong Tea        94   \n",
       "3           4  Smart Ones Classic Favorites Mini Rigatoni Wit...        38   \n",
       "4           5                          Green Chile Anytime Sauce         5   \n",
       "\n",
       "   department_id  \n",
       "0             19  \n",
       "1             13  \n",
       "2              7  \n",
       "3              1  \n",
       "4             13  "
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>product_id</th>\n",
       "      <th>product_name</th>\n",
       "      <th>aisle_id</th>\n",
       "      <th>department_id</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>Chocolate Sandwich Cookies</td>\n",
       "      <td>61</td>\n",
       "      <td>19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>All-Seasons Salt</td>\n",
       "      <td>104</td>\n",
       "      <td>13</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>Robust Golden Unsweetened Oolong Tea</td>\n",
       "      <td>94</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>Smart Ones Classic Favorites Mini Rigatoni Wit...</td>\n",
       "      <td>38</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>Green Chile Anytime Sauce</td>\n",
       "      <td>5</td>\n",
       "      <td>13</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 11
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-13T10:12:44.787913Z",
     "start_time": "2025-01-13T10:12:44.781726Z"
    }
   },
   "cell_type": "code",
   "source": "orders.head() #订单id，用户id",
   "id": "1162dbccd282a79b",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "   order_id  user_id eval_set  order_number  order_dow  order_hour_of_day  \\\n",
       "0   2539329        1    prior             1          2                  8   \n",
       "1   2398795        1    prior             2          3                  7   \n",
       "2    473747        1    prior             3          3                 12   \n",
       "3   2254736        1    prior             4          4                  7   \n",
       "4    431534        1    prior             5          4                 15   \n",
       "\n",
       "   days_since_prior_order  \n",
       "0                     NaN  \n",
       "1                    15.0  \n",
       "2                    21.0  \n",
       "3                    29.0  \n",
       "4                    28.0  "
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>order_id</th>\n",
       "      <th>user_id</th>\n",
       "      <th>eval_set</th>\n",
       "      <th>order_number</th>\n",
       "      <th>order_dow</th>\n",
       "      <th>order_hour_of_day</th>\n",
       "      <th>days_since_prior_order</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2539329</td>\n",
       "      <td>1</td>\n",
       "      <td>prior</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>8</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2398795</td>\n",
       "      <td>1</td>\n",
       "      <td>prior</td>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>7</td>\n",
       "      <td>15.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>473747</td>\n",
       "      <td>1</td>\n",
       "      <td>prior</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>12</td>\n",
       "      <td>21.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2254736</td>\n",
       "      <td>1</td>\n",
       "      <td>prior</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>7</td>\n",
       "      <td>29.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>431534</td>\n",
       "      <td>1</td>\n",
       "      <td>prior</td>\n",
       "      <td>5</td>\n",
       "      <td>4</td>\n",
       "      <td>15</td>\n",
       "      <td>28.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 12
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-13T10:12:50.150208Z",
     "start_time": "2025-01-13T10:12:50.145227Z"
    }
   },
   "cell_type": "code",
   "source": "aisles.head() #过道id，对应过道里放了哪些产品类别",
   "id": "e841cf637efc0555",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "   aisle_id                       aisle\n",
       "0         1       prepared soups salads\n",
       "1         2           specialty cheeses\n",
       "2         3         energy granola bars\n",
       "3         4               instant foods\n",
       "4         5  marinades meat preparation"
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>aisle_id</th>\n",
       "      <th>aisle</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>prepared soups salads</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>specialty cheeses</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>energy granola bars</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>instant foods</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>marinades meat preparation</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 13
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-13T10:13:32.954102Z",
     "start_time": "2025-01-13T10:12:55.706403Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 合并四张表到一张表  （用户-物品类别），在这里挂了，用下阿里云\n",
    "#订单表和产品表关联\n",
    "#用户买了哪些订单，订单里面有哪些产品，产品对应的过道，过道对应的产品类别\n",
    "_mg = pd.merge(prior, products, on=['product_id', 'product_id'])\n",
    "_mg = pd.merge(_mg, orders, on=['order_id', 'order_id'])\n",
    "mt = pd.merge(_mg, aisles, on=['aisle_id', 'aisle_id'])"
   ],
   "id": "1fa5685eb3462154",
   "outputs": [],
   "execution_count": 14
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-13T10:13:58.596996Z",
     "start_time": "2025-01-13T10:13:58.580729Z"
    }
   },
   "cell_type": "code",
   "source": "mt.head(10)",
   "id": "a662ac06baf95fd0",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "   order_id  product_id  add_to_cart_order  reordered  \\\n",
       "0         2       33120                  1          1   \n",
       "1         2       28985                  2          1   \n",
       "2         2        9327                  3          0   \n",
       "3         2       45918                  4          1   \n",
       "4         2       30035                  5          0   \n",
       "5         2       17794                  6          1   \n",
       "6         2       40141                  7          1   \n",
       "7         2        1819                  8          1   \n",
       "8         2       43668                  9          0   \n",
       "9         3       33754                  1          1   \n",
       "\n",
       "                                        product_name  aisle_id  department_id  \\\n",
       "0                                 Organic Egg Whites        86             16   \n",
       "1                              Michigan Organic Kale        83              4   \n",
       "2                                      Garlic Powder       104             13   \n",
       "3                                     Coconut Butter        19             13   \n",
       "4                                  Natural Sweetener        17             13   \n",
       "5                                            Carrots        83              4   \n",
       "6                   Original Unflavored Gelatine Mix       105             13   \n",
       "7           All Natural No Stir Creamy Almond Butter        88             13   \n",
       "8                            Classic Blend Cole Slaw       123              4   \n",
       "9  Total 2% with Strawberry Lowfat Greek Strained...       120             16   \n",
       "\n",
       "   user_id eval_set  order_number  order_dow  order_hour_of_day  \\\n",
       "0   202279    prior             3          5                  9   \n",
       "1   202279    prior             3          5                  9   \n",
       "2   202279    prior             3          5                  9   \n",
       "3   202279    prior             3          5                  9   \n",
       "4   202279    prior             3          5                  9   \n",
       "5   202279    prior             3          5                  9   \n",
       "6   202279    prior             3          5                  9   \n",
       "7   202279    prior             3          5                  9   \n",
       "8   202279    prior             3          5                  9   \n",
       "9   205970    prior            16          5                 17   \n",
       "\n",
       "   days_since_prior_order                       aisle  \n",
       "0                     8.0                        eggs  \n",
       "1                     8.0            fresh vegetables  \n",
       "2                     8.0           spices seasonings  \n",
       "3                     8.0               oils vinegars  \n",
       "4                     8.0          baking ingredients  \n",
       "5                     8.0            fresh vegetables  \n",
       "6                     8.0  doughs gelatins bake mixes  \n",
       "7                     8.0                     spreads  \n",
       "8                     8.0  packaged vegetables fruits  \n",
       "9                    12.0                      yogurt  "
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>order_id</th>\n",
       "      <th>product_id</th>\n",
       "      <th>add_to_cart_order</th>\n",
       "      <th>reordered</th>\n",
       "      <th>product_name</th>\n",
       "      <th>aisle_id</th>\n",
       "      <th>department_id</th>\n",
       "      <th>user_id</th>\n",
       "      <th>eval_set</th>\n",
       "      <th>order_number</th>\n",
       "      <th>order_dow</th>\n",
       "      <th>order_hour_of_day</th>\n",
       "      <th>days_since_prior_order</th>\n",
       "      <th>aisle</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2</td>\n",
       "      <td>33120</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Organic Egg Whites</td>\n",
       "      <td>86</td>\n",
       "      <td>16</td>\n",
       "      <td>202279</td>\n",
       "      <td>prior</td>\n",
       "      <td>3</td>\n",
       "      <td>5</td>\n",
       "      <td>9</td>\n",
       "      <td>8.0</td>\n",
       "      <td>eggs</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>28985</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>Michigan Organic Kale</td>\n",
       "      <td>83</td>\n",
       "      <td>4</td>\n",
       "      <td>202279</td>\n",
       "      <td>prior</td>\n",
       "      <td>3</td>\n",
       "      <td>5</td>\n",
       "      <td>9</td>\n",
       "      <td>8.0</td>\n",
       "      <td>fresh vegetables</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>9327</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>Garlic Powder</td>\n",
       "      <td>104</td>\n",
       "      <td>13</td>\n",
       "      <td>202279</td>\n",
       "      <td>prior</td>\n",
       "      <td>3</td>\n",
       "      <td>5</td>\n",
       "      <td>9</td>\n",
       "      <td>8.0</td>\n",
       "      <td>spices seasonings</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2</td>\n",
       "      <td>45918</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>Coconut Butter</td>\n",
       "      <td>19</td>\n",
       "      <td>13</td>\n",
       "      <td>202279</td>\n",
       "      <td>prior</td>\n",
       "      <td>3</td>\n",
       "      <td>5</td>\n",
       "      <td>9</td>\n",
       "      <td>8.0</td>\n",
       "      <td>oils vinegars</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2</td>\n",
       "      <td>30035</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>Natural Sweetener</td>\n",
       "      <td>17</td>\n",
       "      <td>13</td>\n",
       "      <td>202279</td>\n",
       "      <td>prior</td>\n",
       "      <td>3</td>\n",
       "      <td>5</td>\n",
       "      <td>9</td>\n",
       "      <td>8.0</td>\n",
       "      <td>baking ingredients</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>2</td>\n",
       "      <td>17794</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "      <td>Carrots</td>\n",
       "      <td>83</td>\n",
       "      <td>4</td>\n",
       "      <td>202279</td>\n",
       "      <td>prior</td>\n",
       "      <td>3</td>\n",
       "      <td>5</td>\n",
       "      <td>9</td>\n",
       "      <td>8.0</td>\n",
       "      <td>fresh vegetables</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>2</td>\n",
       "      <td>40141</td>\n",
       "      <td>7</td>\n",
       "      <td>1</td>\n",
       "      <td>Original Unflavored Gelatine Mix</td>\n",
       "      <td>105</td>\n",
       "      <td>13</td>\n",
       "      <td>202279</td>\n",
       "      <td>prior</td>\n",
       "      <td>3</td>\n",
       "      <td>5</td>\n",
       "      <td>9</td>\n",
       "      <td>8.0</td>\n",
       "      <td>doughs gelatins bake mixes</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>2</td>\n",
       "      <td>1819</td>\n",
       "      <td>8</td>\n",
       "      <td>1</td>\n",
       "      <td>All Natural No Stir Creamy Almond Butter</td>\n",
       "      <td>88</td>\n",
       "      <td>13</td>\n",
       "      <td>202279</td>\n",
       "      <td>prior</td>\n",
       "      <td>3</td>\n",
       "      <td>5</td>\n",
       "      <td>9</td>\n",
       "      <td>8.0</td>\n",
       "      <td>spreads</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>2</td>\n",
       "      <td>43668</td>\n",
       "      <td>9</td>\n",
       "      <td>0</td>\n",
       "      <td>Classic Blend Cole Slaw</td>\n",
       "      <td>123</td>\n",
       "      <td>4</td>\n",
       "      <td>202279</td>\n",
       "      <td>prior</td>\n",
       "      <td>3</td>\n",
       "      <td>5</td>\n",
       "      <td>9</td>\n",
       "      <td>8.0</td>\n",
       "      <td>packaged vegetables fruits</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>3</td>\n",
       "      <td>33754</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Total 2% with Strawberry Lowfat Greek Strained...</td>\n",
       "      <td>120</td>\n",
       "      <td>16</td>\n",
       "      <td>205970</td>\n",
       "      <td>prior</td>\n",
       "      <td>16</td>\n",
       "      <td>5</td>\n",
       "      <td>17</td>\n",
       "      <td>12.0</td>\n",
       "      <td>yogurt</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 15
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-13T10:14:00.522565Z",
     "start_time": "2025-01-13T10:14:00.516601Z"
    }
   },
   "cell_type": "code",
   "source": "mt.shape",
   "id": "1ebab1cf86d7393b",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(32434489, 14)"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 16
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-13T10:14:04.666908Z",
     "start_time": "2025-01-13T10:14:01.889465Z"
    }
   },
   "cell_type": "code",
   "source": "mt.isnull().sum()/mt.shape[0]  #数据缺失率，没有缺失值",
   "id": "b70361e3fab25788",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "order_id                  0.00000\n",
       "product_id                0.00000\n",
       "add_to_cart_order         0.00000\n",
       "reordered                 0.00000\n",
       "product_name              0.00000\n",
       "aisle_id                  0.00000\n",
       "department_id             0.00000\n",
       "user_id                   0.00000\n",
       "eval_set                  0.00000\n",
       "order_number              0.00000\n",
       "order_dow                 0.00000\n",
       "order_hour_of_day         0.00000\n",
       "days_since_prior_order    0.06407\n",
       "aisle                     0.00000\n",
       "dtype: float64"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 17
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-13T10:14:58.775380Z",
     "start_time": "2025-01-13T10:14:04.667909Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 交叉表（特殊的分组工具），如果在这一步内存不够了，重启一下jupyter，还是不行，筛选一部分用户的数据，进行聚类\n",
    "cross = pd.crosstab(mt['user_id'], mt['aisle'])"
   ],
   "id": "ae95896a36306242",
   "outputs": [],
   "execution_count": 18
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-13T10:14:58.792580Z",
     "start_time": "2025-01-13T10:14:58.776401Z"
    }
   },
   "cell_type": "code",
   "source": "cross.head(10)",
   "id": "818cb935c530fcd",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "aisle    air fresheners candles  asian foods  baby accessories  \\\n",
       "user_id                                                          \n",
       "1                             0            0                 0   \n",
       "2                             0            3                 0   \n",
       "3                             0            0                 0   \n",
       "4                             0            0                 0   \n",
       "5                             0            2                 0   \n",
       "6                             0            0                 0   \n",
       "7                             0            0                 0   \n",
       "8                             0            1                 0   \n",
       "9                             0            0                 0   \n",
       "10                            0            1                 0   \n",
       "\n",
       "aisle    baby bath body care  baby food formula  bakery desserts  \\\n",
       "user_id                                                            \n",
       "1                          0                  0                0   \n",
       "2                          0                  0                0   \n",
       "3                          0                  0                0   \n",
       "4                          0                  0                0   \n",
       "5                          0                  0                0   \n",
       "6                          0                  0                0   \n",
       "7                          0                  0                0   \n",
       "8                          0                  0                0   \n",
       "9                          0                  6                0   \n",
       "10                         0                  0                0   \n",
       "\n",
       "aisle    baking ingredients  baking supplies decor  beauty  beers coolers  \\\n",
       "user_id                                                                     \n",
       "1                         0                      0       0              0   \n",
       "2                         2                      0       0              0   \n",
       "3                         0                      0       0              0   \n",
       "4                         0                      0       0              0   \n",
       "5                         0                      0       0              0   \n",
       "6                         0                      0       0              0   \n",
       "7                         2                      0       0              0   \n",
       "8                         1                      0       0              0   \n",
       "9                         2                      0       0              0   \n",
       "10                        0                      0       0              0   \n",
       "\n",
       "aisle    ...  spreads  tea  tofu meat alternatives  tortillas flat bread  \\\n",
       "user_id  ...                                                               \n",
       "1        ...        1    0                       0                     0   \n",
       "2        ...        3    1                       1                     0   \n",
       "3        ...        4    1                       0                     0   \n",
       "4        ...        0    0                       0                     1   \n",
       "5        ...        0    0                       0                     0   \n",
       "6        ...        0    0                       0                     0   \n",
       "7        ...        0    0                       0                     0   \n",
       "8        ...        0    0                       0                     0   \n",
       "9        ...        0    0                       0                     0   \n",
       "10       ...        0    0                       0                     0   \n",
       "\n",
       "aisle    trail mix snack mix  trash bags liners  vitamins supplements  \\\n",
       "user_id                                                                 \n",
       "1                          0                  0                     0   \n",
       "2                          0                  0                     0   \n",
       "3                          0                  0                     0   \n",
       "4                          0                  0                     0   \n",
       "5                          0                  0                     0   \n",
       "6                          0                  0                     0   \n",
       "7                          0                  0                     0   \n",
       "8                          0                  0                     0   \n",
       "9                          0                  0                     0   \n",
       "10                         0                  0                     0   \n",
       "\n",
       "aisle    water seltzer sparkling water  white wines  yogurt  \n",
       "user_id                                                      \n",
       "1                                    0            0       1  \n",
       "2                                    2            0      42  \n",
       "3                                    2            0       0  \n",
       "4                                    1            0       0  \n",
       "5                                    0            0       3  \n",
       "6                                    0            0       0  \n",
       "7                                    0            0       5  \n",
       "8                                    0            0       0  \n",
       "9                                    2            0      19  \n",
       "10                                   0            0       2  \n",
       "\n",
       "[10 rows x 134 columns]"
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>aisle</th>\n",
       "      <th>air fresheners candles</th>\n",
       "      <th>asian foods</th>\n",
       "      <th>baby accessories</th>\n",
       "      <th>baby bath body care</th>\n",
       "      <th>baby food formula</th>\n",
       "      <th>bakery desserts</th>\n",
       "      <th>baking ingredients</th>\n",
       "      <th>baking supplies decor</th>\n",
       "      <th>beauty</th>\n",
       "      <th>beers coolers</th>\n",
       "      <th>...</th>\n",
       "      <th>spreads</th>\n",
       "      <th>tea</th>\n",
       "      <th>tofu meat alternatives</th>\n",
       "      <th>tortillas flat bread</th>\n",
       "      <th>trail mix snack mix</th>\n",
       "      <th>trash bags liners</th>\n",
       "      <th>vitamins supplements</th>\n",
       "      <th>water seltzer sparkling water</th>\n",
       "      <th>white wines</th>\n",
       "      <th>yogurt</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>user_id</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>10 rows × 134 columns</p>\n",
       "</div>"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 19
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-13T10:14:58.797183Z",
     "start_time": "2025-01-13T10:14:58.793730Z"
    }
   },
   "cell_type": "code",
   "source": "cross.shape",
   "id": "b95e3a0739e38dd1",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(206209, 134)"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 20
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-13T10:14:58.801158Z",
     "start_time": "2025-01-13T10:14:58.797183Z"
    }
   },
   "cell_type": "code",
   "source": "type(cross)",
   "id": "1aae1899a937db48",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "pandas.core.frame.DataFrame"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 21
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-13T10:14:58.804419Z",
     "start_time": "2025-01-13T10:14:58.801158Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 进行主成分分析,那么大家还记得不？，保留90%的成分，实际特征数目减少了几倍，134--》27\n",
    "pca = PCA(n_components=0.9)\n"
   ],
   "id": "f18ebf442a757c28",
   "outputs": [],
   "execution_count": 22
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-13T10:15:24.741277Z",
     "start_time": "2025-01-13T10:15:24.467825Z"
    }
   },
   "cell_type": "code",
   "source": [
    "data = pca.fit_transform(cross)  #还记得fit_transform的作用不？\n",
    "data.shape"
   ],
   "id": "3a0083f8814bce5c",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(206209, 27)"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 23
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-13T10:15:28.534256Z",
     "start_time": "2025-01-13T10:15:28.530504Z"
    }
   },
   "cell_type": "code",
   "source": "type(data)",
   "id": "dc7c4d1f90ea950",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "numpy.ndarray"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 24
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-13T10:15:31.966650Z",
     "start_time": "2025-01-13T10:15:31.962742Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 把样本数量减少,为了下面画图方便，这里只取500个样本\n",
    "x = data[:500]\n",
    "x.shape"
   ],
   "id": "65e7f0aaa5133bf1",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(500, 27)"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 25
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-13T10:15:48.891212Z",
     "start_time": "2025-01-13T10:15:48.885496Z"
    }
   },
   "cell_type": "code",
   "source": "x[0:20] #前20个样本",
   "id": "e78ba9765d894b78",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-2.42156587e+01, -2.42942720e+00, -2.46636975e+00,\n",
       "         1.45686388e-01,  2.69042476e-01, -1.43293209e+00,\n",
       "        -2.14067666e+00,  2.73803122e+00, -2.71431623e+00,\n",
       "        -1.74313529e+00, -1.13632718e+00,  6.73601069e-01,\n",
       "        -1.65070735e+00,  2.83802486e+00,  5.89384489e+00,\n",
       "        -7.84312891e+00, -4.84010146e+00, -3.22598697e+00,\n",
       "        -4.58007571e+00,  7.77403349e-01, -3.69912893e+00,\n",
       "         1.90721439e+00, -2.99538594e+00, -7.72922878e-01,\n",
       "         6.86800336e-01,  1.69439402e+00, -2.34323022e+00],\n",
       "       [ 6.46320806e+00, -3.67511165e+01,  8.38255336e+00,\n",
       "        -1.50975303e+01, -6.92093785e+00, -9.78375183e-01,\n",
       "        -6.01156653e+00, -3.78772465e+00, -8.18074883e+00,\n",
       "        -9.04086141e+00, -5.61352902e+00, -1.11325323e+00,\n",
       "         2.96702911e+00, -4.73123497e+00, -9.11472283e+00,\n",
       "        -2.14709471e-01,  1.29694031e+00, -7.37605505e-01,\n",
       "        -7.37401979e-01,  7.40042249e-01, -9.13382968e-02,\n",
       "         5.15128465e+00,  4.58481528e+00,  3.23789431e+00,\n",
       "         4.12121252e+00,  2.44689740e+00, -4.28348478e+00],\n",
       "       [-7.99030162e+00, -2.40438257e+00, -1.10300641e+01,\n",
       "        -6.72230096e-01, -4.42368029e-01, -2.82327194e+00,\n",
       "         6.28414012e+00, -6.51250946e+00, -2.14863353e+00,\n",
       "        -1.58525733e+00,  8.28813958e+00, -2.66151647e+00,\n",
       "        -4.50773836e+00,  1.19764737e+00,  6.93186953e-01,\n",
       "        -2.03281164e+00, -2.15050796e+00,  5.43473349e+00,\n",
       "        -3.60484175e+00,  4.28279419e+00, -4.45833616e-01,\n",
       "         3.03933749e+00,  1.46956568e+00,  2.94665603e+00,\n",
       "         1.77534453e+00, -4.44194030e-01,  7.86665571e-01],\n",
       "       [-2.79911291e+01,  7.55822760e-01, -1.92173207e+00,\n",
       "        -2.09188771e+00, -2.88231934e-01,  9.26177341e-01,\n",
       "        -8.27127057e-01, -6.14848545e-01,  3.78198802e-02,\n",
       "        -8.90672448e-01, -3.72088202e-01, -9.85771637e-01,\n",
       "         1.22495060e+00, -1.09639889e+00, -1.87159972e+00,\n",
       "        -7.10463022e-01,  6.75146395e-01, -2.62095591e-01,\n",
       "        -7.10689458e-02, -2.28812201e-01, -6.06522210e-01,\n",
       "         3.67203966e-01, -9.98709579e-01,  1.77374812e-01,\n",
       "         7.54646031e-01,  1.35817221e-01, -5.00043313e-01],\n",
       "       [-1.98963936e+01,  2.63722464e+00,  5.33228944e-01,\n",
       "        -3.67922837e+00,  6.12824980e-01, -1.62400824e+00,\n",
       "         3.93577123e+00, -2.00462740e+00,  1.00208961e+00,\n",
       "         3.08574683e+00, -5.50145774e-01,  2.87433706e-01,\n",
       "         4.11277359e-01, -2.64715919e+00,  6.28331685e-02,\n",
       "         1.65193116e-01, -4.81514320e-01,  1.64452919e+00,\n",
       "        -4.03108796e-01,  1.36899942e-01, -2.57981162e-01,\n",
       "         2.05400491e-01, -2.83754054e-01, -3.83840932e-01,\n",
       "        -1.93524072e-01, -6.45446295e-03, -2.08896003e-01],\n",
       "       [-2.64697723e+01,  4.68042570e+00,  4.64557305e-01,\n",
       "        -2.91452624e+00,  2.76753747e-01,  4.50849758e-01,\n",
       "         6.17645819e-01, -1.36215062e+00, -8.78502640e-02,\n",
       "         1.04054593e+00, -1.29224191e-02, -7.72674027e-01,\n",
       "        -1.05021630e+00, -3.84457799e-01, -6.50245651e-01,\n",
       "        -6.13803784e-01, -3.15793193e-01,  4.45930153e-01,\n",
       "        -3.11288889e-01,  2.86938163e-01, -1.07310998e-01,\n",
       "         6.65099620e-02, -1.56723355e-01, -1.59418792e-01,\n",
       "        -8.45564389e-02, -3.76327213e-01, -1.50797713e-01],\n",
       "       [ 6.43209799e+00, -5.20763684e+00, -5.37622059e+00,\n",
       "         5.03559798e+00, -1.55767996e+00, -7.73522520e+00,\n",
       "        -3.65929977e+00, -1.36194664e+01,  1.99127136e+01,\n",
       "        -3.87327108e+00,  2.10011278e+00, -2.67040732e+00,\n",
       "        -3.92512694e+00,  2.84756844e+00, -2.99126238e+00,\n",
       "        -4.13848691e+00,  4.59204143e+00,  2.66185949e+00,\n",
       "        -3.19197384e+00,  1.21530631e+00, -1.45136887e+00,\n",
       "         2.61171430e+00,  5.35780919e+00, -1.67350589e-01,\n",
       "         3.68044142e+00,  5.13104043e+00, -2.44269167e+00],\n",
       "       [-1.47587512e+01,  1.48684622e+01,  5.26133999e+00,\n",
       "        -2.72312827e+00, -4.41192804e-01,  1.77040069e+00,\n",
       "        -1.74849912e+00,  3.44199907e-01, -4.91075999e-01,\n",
       "         7.21488180e-01, -2.07273731e-01, -8.11480837e-01,\n",
       "        -1.49222116e+00,  6.44199120e-01, -7.40158282e-01,\n",
       "        -1.66319300e+00, -7.31046033e-01,  1.27234895e+00,\n",
       "        -7.04458786e-01, -1.38317595e-01,  4.33882990e-01,\n",
       "        -1.18706848e+00,  3.63571463e-01, -3.12302788e-01,\n",
       "         1.08780259e+00, -7.86800582e-01, -1.10628088e+00],\n",
       "       [-1.96448729e+01, -1.26189013e+01,  9.83832433e+00,\n",
       "        -5.96574917e+00,  3.25687125e+00,  2.32791585e+00,\n",
       "        -6.73245565e-03, -3.08230596e+00, -2.02937972e+00,\n",
       "        -2.19119257e+00, -5.76293826e-01,  2.98996645e+00,\n",
       "        -2.47415700e+00, -2.88953834e+00, -3.31359457e-01,\n",
       "        -1.21583350e-01,  1.46034805e+00, -1.54383264e+00,\n",
       "        -2.46265921e+00, -9.20833430e-01, -2.09191478e+00,\n",
       "         6.57037453e-02, -1.15878119e+00, -4.98714845e-01,\n",
       "         6.28224832e-01, -8.20937502e-01, -1.02610380e+00],\n",
       "       [ 4.06313864e+00,  1.54398182e+01,  2.77360399e+00,\n",
       "        -1.84179405e+00,  7.00877536e-01, -3.93387952e+00,\n",
       "         3.89695552e+00, -9.00116964e-01, -2.15791311e+00,\n",
       "         6.78592732e-01, -7.31465145e+00, -3.25791681e+00,\n",
       "        -4.73315648e+00,  1.19352292e+00, -1.62849209e+00,\n",
       "        -3.81328812e+00, -1.68239105e+00,  2.85570315e+00,\n",
       "        -8.93176379e-01, -2.53824756e+00, -1.41322471e-01,\n",
       "         4.26790007e-01,  4.48191235e+00, -3.74732433e+00,\n",
       "        -1.03797787e+00, -9.22191838e-01, -7.55201486e+00],\n",
       "       [-2.02455398e+01, -6.68437391e+00,  5.11025241e+00,\n",
       "         1.41841387e+00, -2.81028168e+00,  4.33753019e+00,\n",
       "         4.99372800e+00,  2.43477740e-01,  1.78790131e+00,\n",
       "        -2.14379414e+00,  3.64790447e-01, -9.24276141e-01,\n",
       "        -1.60773986e+00,  1.96658394e+00,  2.84771308e+00,\n",
       "        -1.80580408e+00, -1.28902657e+00, -1.19977430e+00,\n",
       "        -2.77802808e+00, -1.38815235e+00, -2.09464274e+00,\n",
       "        -2.18363074e+00,  8.24117867e-02,  4.75335720e-01,\n",
       "         5.57358638e-01, -5.38245813e-01, -6.33543940e-01],\n",
       "       [-1.44511480e+01,  7.23700588e+00, -8.84940440e-01,\n",
       "        -1.69257074e+00, -8.04005349e-01,  7.50783288e-01,\n",
       "        -1.20399823e+00,  5.92433851e-01, -7.39941313e-01,\n",
       "        -5.28899739e-01,  8.35333709e-01, -3.49188464e-02,\n",
       "         6.22328669e-02, -1.39626964e+00, -5.83627815e-02,\n",
       "        -6.89369230e-01,  1.31340797e+00,  8.62427626e-01,\n",
       "         5.99455047e-01, -4.65399695e-01, -5.31097816e-02,\n",
       "        -1.88068958e+00,  9.37301014e-01,  1.90902827e+00,\n",
       "        -1.09557977e+00,  2.04933312e+00,  1.42977686e+00],\n",
       "       [-1.74463125e+01,  7.51421514e+00,  5.01443371e+00,\n",
       "        -1.77322190e-01,  2.02660727e+00, -2.01556821e+00,\n",
       "        -1.45543319e-01,  5.29367982e+00,  4.10782325e+00,\n",
       "         7.76179962e+00,  6.04001216e+00,  1.45037823e+00,\n",
       "        -1.16896552e-01, -4.17011828e-01, -1.46410720e+00,\n",
       "        -2.33087968e+00,  2.13906017e+00,  8.02884057e-01,\n",
       "         2.12993318e-01, -2.20391221e+00,  2.11466418e+00,\n",
       "        -2.80691042e+00, -6.32543908e-01, -3.57410591e-01,\n",
       "         5.56920379e+00, -5.48730696e-02, -2.94743859e+00],\n",
       "       [-7.71361832e+00,  1.55175178e+01,  6.91523092e+00,\n",
       "         2.74703660e+00,  3.57456758e+00, -5.39400584e+00,\n",
       "         2.26128330e-01,  2.32385008e+00, -1.73872259e+00,\n",
       "        -2.69314750e+00,  2.17706965e+00, -3.19595972e+00,\n",
       "        -5.04974473e-01,  3.70606743e+00,  8.86635123e-01,\n",
       "         7.39506967e+00,  2.23399244e+00, -1.06378254e+01,\n",
       "         7.49359420e+00, -6.38579176e+00, -2.77850112e-02,\n",
       "         1.63495180e-03,  9.20494441e-01, -1.18201609e+00,\n",
       "        -1.11617057e+00,  4.48487258e-01, -1.65501203e+00],\n",
       "       [-2.80738125e+01, -4.42178736e-01, -3.96247421e-01,\n",
       "         1.73236743e+00, -6.15434710e-01, -3.38929538e-01,\n",
       "        -3.13954769e+00, -5.16447442e-01, -1.54787501e+00,\n",
       "        -7.31714910e-01,  3.07262085e-01,  5.52359660e+00,\n",
       "         1.31386794e+00, -1.26141349e-01,  6.65699471e+00,\n",
       "        -7.43908425e+00, -3.19274299e+00, -3.67511914e+00,\n",
       "         3.61003913e+00,  2.37152779e+00, -2.92593799e+00,\n",
       "         1.04182913e+00,  1.43339105e+00,  3.33953359e+00,\n",
       "        -4.30230208e+00, -4.68468890e+00, -1.59075594e+00],\n",
       "       [-8.93253036e+00,  1.26298064e+01,  9.02011708e-01,\n",
       "        -2.21989363e+00, -1.27541004e-01, -1.55721352e+00,\n",
       "         5.78194091e+00, -6.51551392e+00, -3.52931874e-01,\n",
       "         2.40177741e+00,  1.44108024e+00,  1.10159497e+00,\n",
       "         5.78559635e-01, -1.54987962e+00,  1.13550048e+00,\n",
       "        -1.37030282e-01, -1.13239098e+00,  5.41466955e-01,\n",
       "         4.84287933e-01,  6.87102879e-01,  3.55166390e-01,\n",
       "         5.34958507e-01, -5.42956640e-01, -4.90954860e-01,\n",
       "         8.20946420e-01, -9.89149954e-01, -1.01992041e+00],\n",
       "       [-9.55092998e+00, -1.59934966e+01,  1.02386648e+00,\n",
       "         2.67254757e+01, -5.31419576e+00,  1.09694000e+01,\n",
       "         1.00992925e+01,  1.58689160e+01, -3.71362009e+00,\n",
       "        -2.07312686e+01,  4.16650373e-01, -1.47996391e+01,\n",
       "         2.57449558e+01,  3.94870264e+00,  5.46391277e+00,\n",
       "        -1.36353655e+00,  1.15749899e+01, -1.39278292e+00,\n",
       "        -1.41243638e+00, -7.35756397e+00, -6.36701035e+00,\n",
       "        -7.81041245e+00, -9.50632423e-02,  5.57879785e+00,\n",
       "        -4.72133772e+00,  1.93137047e+01,  1.52738197e+00],\n",
       "       [-2.28943241e+01,  3.76334195e-01, -2.91127307e+00,\n",
       "         8.82235369e-01, -8.12488326e-01,  8.38928301e-01,\n",
       "         6.51231134e+00, -4.68546050e+00,  6.33492891e-01,\n",
       "         1.13319864e+00,  1.37360377e+00, -7.32331308e-01,\n",
       "        -1.79006111e+00, -1.24131999e+00, -1.29670301e+00,\n",
       "        -9.28148707e-01, -4.82857296e-01,  1.19611375e+00,\n",
       "        -1.24175604e+00,  5.07769142e-01, -8.29489015e-01,\n",
       "        -7.21240206e-01, -1.09117162e-01, -6.73501981e-02,\n",
       "         1.30136906e-01, -8.78443396e-01, -7.45505407e-01],\n",
       "       [-2.04738770e+01, -4.54289171e+00,  5.84104189e+00,\n",
       "         6.43406570e+00,  5.41873237e+00, -9.98069989e+00,\n",
       "        -2.65173753e+00,  5.98871896e+00, -5.46982283e+00,\n",
       "        -5.75564395e+00, -4.52781848e+00, -9.19849058e+00,\n",
       "         5.87990992e+00,  6.13755092e+00,  2.17295982e+00,\n",
       "        -1.05719449e+00, -6.28541039e+00, -1.10861191e+00,\n",
       "        -3.20265252e+00, -2.08603897e+00, -2.49338499e-01,\n",
       "        -1.22341039e+00,  1.75345378e+00, -1.47352270e+00,\n",
       "        -3.88946665e+00, -2.49656080e+00,  2.45193427e-01],\n",
       "       [-2.43595319e+01, -9.91517635e-01, -6.17401230e+00,\n",
       "        -4.31684118e+00, -1.22502876e+00,  1.58923229e+00,\n",
       "        -2.08828745e+00, -7.52755777e-01, -1.51155846e+00,\n",
       "         1.05754868e+00, -1.37304621e+00,  8.63346062e-01,\n",
       "        -1.41719361e-01,  9.06620342e-01, -1.97339930e-01,\n",
       "         3.20166675e-01,  3.65169434e-01, -5.65240043e-03,\n",
       "        -4.12027470e-02,  1.47275929e+00,  5.73999434e-01,\n",
       "         1.27021930e+00,  1.04623087e+00,  1.45448329e+00,\n",
       "         1.24696092e+00, -4.11135910e-01,  1.89132324e-01]])"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 28
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-13T10:16:01.016179Z",
     "start_time": "2025-01-13T10:16:01.012834Z"
    }
   },
   "cell_type": "code",
   "source": "x.max() #最大值",
   "id": "9d6228d6747c48d9",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "np.float64(407.18563418249795)"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 29
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-13T10:16:22.798802Z",
     "start_time": "2025-01-13T10:16:22.795387Z"
    }
   },
   "cell_type": "code",
   "source": "x.min()#最小值",
   "id": "3d4d53a09fdd05af",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "np.float64(-144.56766126863653)"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 32
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-13T10:16:17.228427Z",
     "start_time": "2025-01-13T10:16:17.224929Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 假设用户一共分为四个类别\n",
    "#n_clusters是分为几个类别，是主要的超参\n",
    "km = KMeans(n_clusters=4)"
   ],
   "id": "6a25111f59229ad5",
   "outputs": [],
   "execution_count": 31
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-13T10:17:07.057204Z",
     "start_time": "2025-01-13T10:17:06.479956Z"
    }
   },
   "cell_type": "code",
   "source": "km.fit(x)  #开始训练",
   "id": "e817a492bd868bbb",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "KMeans(n_clusters=4)"
      ],
      "text/html": [
       "<style>#sk-container-id-1 {\n",
       "  /* Definition of color scheme common for light and dark mode */\n",
       "  --sklearn-color-text: #000;\n",
       "  --sklearn-color-text-muted: #666;\n",
       "  --sklearn-color-line: gray;\n",
       "  /* Definition of color scheme for unfitted estimators */\n",
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
       "  /* Definition of color scheme for fitted estimators */\n",
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
       "\n",
       "  /* Specific color for light theme */\n",
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-icon: #696969;\n",
       "\n",
       "  @media (prefers-color-scheme: dark) {\n",
       "    /* Redefinition of color scheme for dark theme */\n",
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-icon: #878787;\n",
       "  }\n",
       "}\n",
       "\n",
       "#sk-container-id-1 {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 pre {\n",
       "  padding: 0;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-hidden--visually {\n",
       "  border: 0;\n",
       "  clip: rect(1px 1px 1px 1px);\n",
       "  clip: rect(1px, 1px, 1px, 1px);\n",
       "  height: 1px;\n",
       "  margin: -1px;\n",
       "  overflow: hidden;\n",
       "  padding: 0;\n",
       "  position: absolute;\n",
       "  width: 1px;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-dashed-wrapped {\n",
       "  border: 1px dashed var(--sklearn-color-line);\n",
       "  margin: 0 0.4em 0.5em 0.4em;\n",
       "  box-sizing: border-box;\n",
       "  padding-bottom: 0.4em;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-container {\n",
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
       "     so we also need the `!important` here to be able to override the\n",
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
       "  display: inline-block !important;\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-text-repr-fallback {\n",
       "  display: none;\n",
       "}\n",
       "\n",
       "div.sk-parallel-item,\n",
       "div.sk-serial,\n",
       "div.sk-item {\n",
       "  /* draw centered vertical line to link estimators */\n",
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
       "  background-size: 2px 100%;\n",
       "  background-repeat: no-repeat;\n",
       "  background-position: center center;\n",
       "}\n",
       "\n",
       "/* Parallel-specific style estimator block */\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item::after {\n",
       "  content: \"\";\n",
       "  width: 100%;\n",
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
       "  flex-grow: 1;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel {\n",
       "  display: flex;\n",
       "  align-items: stretch;\n",
       "  justify-content: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:first-child::after {\n",
       "  align-self: flex-end;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:last-child::after {\n",
       "  align-self: flex-start;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:only-child::after {\n",
       "  width: 0;\n",
       "}\n",
       "\n",
       "/* Serial-specific style estimator block */\n",
       "\n",
       "#sk-container-id-1 div.sk-serial {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "  align-items: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  padding-right: 1em;\n",
       "  padding-left: 1em;\n",
       "}\n",
       "\n",
       "\n",
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
       "clickable and can be expanded/collapsed.\n",
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
       "*/\n",
       "\n",
       "/* Pipeline and ColumnTransformer style (default) */\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable {\n",
       "  /* Default theme specific background. It is overwritten whether we have a\n",
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "/* Toggleable label */\n",
       "#sk-container-id-1 label.sk-toggleable__label {\n",
       "  cursor: pointer;\n",
       "  display: flex;\n",
       "  width: 100%;\n",
       "  margin-bottom: 0;\n",
       "  padding: 0.5em;\n",
       "  box-sizing: border-box;\n",
       "  text-align: center;\n",
       "  align-items: start;\n",
       "  justify-content: space-between;\n",
       "  gap: 0.5em;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label .caption {\n",
       "  font-size: 0.6rem;\n",
       "  font-weight: lighter;\n",
       "  color: var(--sklearn-color-text-muted);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label-arrow:before {\n",
       "  /* Arrow on the left of the label */\n",
       "  content: \"▸\";\n",
       "  float: left;\n",
       "  margin-right: 0.25em;\n",
       "  color: var(--sklearn-color-icon);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "/* Toggleable content - dropdown */\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content {\n",
       "  max-height: 0;\n",
       "  max-width: 0;\n",
       "  overflow: hidden;\n",
       "  text-align: left;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content pre {\n",
       "  margin: 0.2em;\n",
       "  border-radius: 0.25em;\n",
       "  color: var(--sklearn-color-text);\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content.fitted pre {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
       "  /* Expand drop-down */\n",
       "  max-height: 200px;\n",
       "  max-width: 100%;\n",
       "  overflow: auto;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       "/* Pipeline/ColumnTransformer-specific style */\n",
       "\n",
       "#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator-specific style */\n",
       "\n",
       "/* Colorize estimator box */\n",
       "#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label label.sk-toggleable__label,\n",
       "#sk-container-id-1 div.sk-label label {\n",
       "  /* The background is the default theme color */\n",
       "  color: var(--sklearn-color-text-on-default-background);\n",
       "}\n",
       "\n",
       "/* On hover, darken the color of the background */\n",
       "#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "/* Label box, darken color on hover, fitted */\n",
       "#sk-container-id-1 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator label */\n",
       "\n",
       "#sk-container-id-1 div.sk-label label {\n",
       "  font-family: monospace;\n",
       "  font-weight: bold;\n",
       "  display: inline-block;\n",
       "  line-height: 1.2em;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label-container {\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "/* Estimator-specific */\n",
       "#sk-container-id-1 div.sk-estimator {\n",
       "  font-family: monospace;\n",
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
       "  border-radius: 0.25em;\n",
       "  box-sizing: border-box;\n",
       "  margin-bottom: 0.5em;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "/* on hover */\n",
       "#sk-container-id-1 div.sk-estimator:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
       "\n",
       "/* Common style for \"i\" and \"?\" */\n",
       "\n",
       ".sk-estimator-doc-link,\n",
       "a:link.sk-estimator-doc-link,\n",
       "a:visited.sk-estimator-doc-link {\n",
       "  float: right;\n",
       "  font-size: smaller;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1em;\n",
       "  height: 1em;\n",
       "  width: 1em;\n",
       "  text-decoration: none !important;\n",
       "  margin-left: 0.5em;\n",
       "  text-align: center;\n",
       "  /* unfitted */\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted,\n",
       "a:link.sk-estimator-doc-link.fitted,\n",
       "a:visited.sk-estimator-doc-link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "/* Span, style for the box shown on hovering the info icon */\n",
       ".sk-estimator-doc-link span {\n",
       "  display: none;\n",
       "  z-index: 9999;\n",
       "  position: relative;\n",
       "  font-weight: normal;\n",
       "  right: .2ex;\n",
       "  padding: .5ex;\n",
       "  margin: .5ex;\n",
       "  width: min-content;\n",
       "  min-width: 20ex;\n",
       "  max-width: 50ex;\n",
       "  color: var(--sklearn-color-text);\n",
       "  box-shadow: 2pt 2pt 4pt #999;\n",
       "  /* unfitted */\n",
       "  background: var(--sklearn-color-unfitted-level-0);\n",
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted span {\n",
       "  /* fitted */\n",
       "  background: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link:hover span {\n",
       "  display: block;\n",
       "}\n",
       "\n",
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link {\n",
       "  float: right;\n",
       "  font-size: 1rem;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1rem;\n",
       "  height: 1rem;\n",
       "  width: 1rem;\n",
       "  text-decoration: none;\n",
       "  /* unfitted */\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "#sk-container-id-1 a.estimator_doc_link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>KMeans(n_clusters=4)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>KMeans</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.cluster.KMeans.html\">?<span>Documentation for KMeans</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></div></label><div class=\"sk-toggleable__content fitted\"><pre>KMeans(n_clusters=4)</pre></div> </div></div></div></div>"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 35
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-13T10:17:14.394440Z",
     "start_time": "2025-01-13T10:17:14.389657Z"
    }
   },
   "cell_type": "code",
   "source": [
    "#开始预测\n",
    "predict = km.predict(x)"
   ],
   "id": "7749bd767ac2c1ef",
   "outputs": [],
   "execution_count": 36
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-13T10:17:20.953637Z",
     "start_time": "2025-01-13T10:17:20.949504Z"
    }
   },
   "cell_type": "code",
   "source": "print(predict)  #预测得到的是每一个样本的类别",
   "id": "50c22ef3db20c2bc",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[2 0 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 0 0 2 2 2 2 2 2 0 2 0\n",
      " 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 3 2 2 2 2 2 2 2 2 0 2 2 2 2 2 2 2 0 2 2 2\n",
      " 0 2 0 2 2 0 2 2 2 2 2 0 0 2 0 0 2 2 2 2 2 2 2 2 0 2 0 2 2 2 2 2 2 2 2 3 2\n",
      " 0 2 2 2 2 2 0 2 2 2 2 2 2 2 2 2 2 2 2 2 2 0 2 2 2 2 2 2 3 2 0 0 2 2 0 2 2\n",
      " 2 2 2 0 0 0 0 2 2 2 2 2 0 2 2 2 2 2 2 2 2 2 2 2 0 2 2 2 2 2 2 0 2 2 2 2 2\n",
      " 2 2 2 2 0 2 2 2 2 2 2 0 2 2 2 2 0 2 3 2 0 2 2 0 1 2 2 2 3 2 0 2 2 0 2 0 0\n",
      " 3 2 2 2 3 2 0 2 2 3 0 0 2 0 2 2 2 2 2 2 3 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2\n",
      " 2 2 0 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 3 3 2 2 0 2 2 2 2 3 0 2 2 2 2 0 2\n",
      " 2 2 2 0 2 2 2 0 2 2 2 2 0 2 2 2 1 2 2 2 2 2 2 2 3 2 3 2 2 2 3 2 2 2 2 0 2\n",
      " 3 2 2 0 2 2 2 0 2 2 2 2 2 2 2 2 2 0 2 2 2 0 2 0 2 0 2 2 2 0 2 2 2 2 2 2 0\n",
      " 2 2 1 2 2 2 2 2 2 2 0 2 2 2 2 2 2 2 0 0 0 2 2 0 2 0 2 3 2 2 2 2 3 2 2 2 2\n",
      " 2 3 0 2 2 0 2 2 2 2 0 2 2 2 0 2 2 2 2 2 2 2 2 2 0 2 2 2 2 2 0 2 2 2 2 2 1\n",
      " 2 2 2 0 2 0 0 0 2 0 2 2 2 2 2 2 2 3 2 3 0 3 2 2 2 2 2 2 2 2 2 0 2 2 2 2 3\n",
      " 2 2 2 2 0 0 2 2 2 2 2 2 2 0 3 2 2 2 2]\n"
     ]
    }
   ],
   "execution_count": 37
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-13T10:17:37.967114Z",
     "start_time": "2025-01-13T10:17:37.962516Z"
    }
   },
   "cell_type": "code",
   "source": [
    "import numpy as np\n",
    "np.unique(predict)  #看一下有几个类别"
   ],
   "id": "614f19a9eca5c4a5",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0, 1, 2, 3], dtype=int32)"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 39
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-13T10:18:35.873210Z",
     "start_time": "2025-01-13T10:18:35.865210Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 显示聚类的结果\n",
    "plt.figure(figsize=(20, 10)) #设置画布大小"
   ],
   "id": "aba5b7f483472b73",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 2000x1000 with 0 Axes>"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 2000x1000 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 46
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-13T10:18:37.557638Z",
     "start_time": "2025-01-13T10:18:37.466548Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 建立四个颜色的列表\n",
    "colored = ['orange', 'green', 'blue', 'purple']\n",
    "colr = [colored[i] for i in predict] #根据类别给每个样本赋予颜色\n",
    "#去选择任意两个特征来看聚类的图，可以自行调整,第2个，第20个特征\n",
    "plt.scatter(x[:, 1], x[:, 19], color=colr)"
   ],
   "id": "2f9e026696634848",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x22e7c9f0a40>"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\MECHREV\\AppData\\Roaming\\Python\\Python312\\site-packages\\IPython\\core\\events.py:82: UserWarning: Glyph 8722 (\\N{MINUS SIGN}) missing from font(s) SimHei.\n",
      "  func(*args, **kwargs)\n",
      "C:\\Users\\MECHREV\\AppData\\Roaming\\Python\\Python312\\site-packages\\IPython\\core\\pylabtools.py:170: UserWarning: Glyph 8722 (\\N{MINUS SIGN}) missing from font(s) SimHei.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAikAAAGbCAYAAAABeQD9AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAVHxJREFUeJzt3Qd4U+X+B/BvRje0tEAp0AJlU9mliMhUkL1EEUREuKgoOFC8igP1ev+Ag31BHCwRFFAZykb2EihQRtmUWQotlE7oSM7/ec8hpaVJmkKbnKTfz/NESXKavqdpe759x+/VSJIkgYiIiEhltI5uABEREZE5DClERESkSgwpREREpEoMKURERKRKDClERESkSgwpREREpEoMKURERKRKDClERESkSno4KaPRiNjYWJQuXRoajcbRzSEiIiIbiBqyKSkpqFSpErRarWuGFBFQQkJCHN0MIiIiegCXLl1CcHCwa4YU0YNiOklfX19HN4eIiIhskJycLHcymK7jLhlSTEM8IqAwpBARETkXW6ZqcOIsERERqRJDChEREakSQwoRERGpEkMKERERqRJDChEREakSQwoRERGpEkMKERERqRJDChEREamS0xZzIxdjNADXtwDplwHPQCCoA6B1c3SriIjIgRhSyPEurwD2j1QCiolHOaDJN0D1wY5sGRERORBDCjnWlb+AbX3yP56RAOx5CZCMQI0hjmgZERE5GOekkONIEhA5ynTH/DEHRwOGTHu2ioiIVIIhhRzn5n4g9YzlgCJk3gSurrNnq4iISCUYUshxbsfZdtwdG48jIiKXwpBCjuNdybbjvCoXd0uIiEiFGFLIcfybAr51rX8begQCFTvas1VERKQSDCnkOBoNED5N+T/EzYzwKayXQkRUQtklpPz4448ICQmBt7c32rVrh3PnzsmPHz16FBEREfD398d7770HSaz2oJJF9JK0WwOUrpX3ce8QoNVSoNoAR7WMiIhcPaScPXsW//nPf7BixQqcOHECNWrUwEsvvYSMjAz06NED4eHh2L9/P6KjozFv3rzibg6pNah0PwE8tQdo9RvQYRvQ6zxQ5RlHt4yIiFw5pBw8eBAtWrRA06ZNUaVKFQwdOhRnzpzBmjVrkJSUhEmTJsnBZdy4cZg9e3ZxN4fUSgz5lHsUqNIXCGwNaDgSSURU0hV7xdmwsDBs2rQJhw4dQmhoKGbOnImOHTsiKipKDi9iCEho2LCh3Jtiieh5ETeT5OTk4m46EREROZDWHiHlmWeeQZMmTVCmTBns3r0b33zzjRwyRGgx0Wg00Ol0SExMNPs648ePh5+fX85NzHEhIiIi11XsIWXv3r34888/sWfPHty6dQsDBgxA165dodfr4eHhkedYT09PpKenm32dMWPGyMNDptulS5eKu+lERETkyiHll19+Qf/+/fHoo4/KPSD//e9/5cm0AQEBiI+Pz3NsSkoK3N3dzb6OCDS+vr55bkREROS6in1OitFoREJCQp4gInpLRE+KGPoxiYmJkeeciPBCREREVOw9Ka1bt8Yff/yByZMnY9GiRejduzeCgoLw5ptvyvNS5s6dKx8nVvd06NBBnpdCREREVOw9KX379sXx48cxZcoUXL16FfXr18eyZcvg5uYmF3kTc1REITetVostW7YUd3OIiIjISWgkB5d5jYuLQ2RkpLwcuWzZsjZ/nOiFEXNcxCRazk8hIiJyDoW5fhd7T0pBxNBPt27dHN0MIiIiUhmW9SQiIiJVYkghIiIiVWJIISIiIlViSCEiIiJVYkghIiIiVWJIISIiIlViSCEiIiJVYkghIiIiVWJIISIiIlViSCEiIiJVYkghIiIiVWJIISIiIlViSCEiIiJVYkghIiIiVWJIISIiIlViSCEiIiJVYkghIiIiVWJIISIiIlViSCEiIiJVYkghIiIiVWJIISIiIlViSCEiIiJVYkghIiIiVWJIISIiIlViSCEiIiJVYkghIiIiVWJIISIiIlViSCEiIiJVYkghIiIiVWJIISIiIlViSCEiIiJVYkghIiIiVWJIISIiIlViSCEiIiJVYkghIiIiVWJIISIiIlViSCEiIiJVYkghIiIiVWJIISIiIlViSCEiIiJVYkghIiIiVWJIISIiIlViSCEiIiJVYkghIiIiVWJIISIiIlViSCEiIiJVYkghIiIiVWJIISIiIlViSCEiIiJVYkghIiIiVbJrSHn//ffRo0ePnPtHjx5FREQE/P398d5770GSJHs2h4iIiFTMbiHl8OHDmDlzJqZOnSrfz8jIkANLeHg49u/fj+joaMybN89ezSEiIiKVs0tIMRqNeOWVVzBq1ChUr15dfmzNmjVISkrCpEmTUKNGDYwbNw6zZ8+2R3OIiIjICdglpMyaNQtHjhxBtWrVsHLlSmRmZiIqKgotWrSAt7e3fEzDhg3l3hRLRM9LcnJynhsRERG5rmIPKampqfj000/lHpQLFy5g8uTJaNWqlRwyQkNDc47TaDTQ6XRITEw0+zrjx4+Hn59fzi0kJKS4m05ERESuHFL++OMPpKWlYfPmzfj888+xYcMGpKSkYM6cOfDw8MhzrKenJ9LT082+zpgxY+ThIdPt0qVLxd10IiIiciB9cX+Cy5cvy8M65cqVUz6hXi8P7Zw4cQLx8fF5jhXhxd3d3ezriEBzf6ghIiIi11XsPSnBwcG4fft2nsfEsM+UKVOwe/funMdiYmLkeScBAQHF3SQiIiJyAsUeUrp16yZPiBWTZ0WvyrRp0+RJs08//bQ8L2Xu3LnycWJ1T4cOHeR5KURERETFPtxTtmxZrF69GqNHj8Y777yDihUrYsmSJfLE1x9//BEDBgyQC7lptVps2bKluJtDRERETkIjObjMa1xcHCIjI+V5KyLQ2Er0wohVPmISra+vb7G2kYiIiIpGYa7fxd6TUpCgoCB5SIiIiIgoN24wSERERKrEkEJERESqxJBCREREqsSQQkRERKrEkEJERESqxJBCREREqsSQQkRERKrEkEJERESqxJBCREREqsSQQkRERKrEkEJERESqxJBCREREqsSQQkRERKrEkEJERESqxJBCREREqsSQQkRERKrEkEJERESqxJBCREREqsSQQkRERKrEkEJERESqxJBCREREqsSQQkRERKrEkEJERESqxJBCREREqsSQQkRERKrEkEJERESqxJBCREREqsSQQkRERKrEkEJERESqxJBCREREqsSQQkRERKrEkEJERESqxJBCREREqsSQQkRERKrEkEJERESqxJBCREREqsSQQkRERKrEkEJERESqxJBCREREqsSQQkRERKrEkEJERESqxJBCREREqsSQQkRERKrEkEJERESqxJBCREREqsSQQkRERKrEkEJERESqxJBCREREqsSQQkRERKpk95DSuXNnzJs3T/731q1bUa9ePZQrVw6TJk2yd1OIiIhIxewaUhYuXIh169bJ/46Pj0fPnj0xYMAA7N69W35u8+bN9mwOERERqZjdQsrNmzfx7rvvok6dOvJ9EUoqVaqETz75BLVq1cLYsWMxe/ZsezWHiIiIVM5uIUUElD59+qBFixby/aioKLRv3x4ajUa+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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 47
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-13T10:18:22.025392Z",
     "start_time": "2025-01-13T10:18:22.017486Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 评判聚类效果，轮廓系数，聚类效果很难超过0.7，可以通过这个得分去调整上面KMeans的n_clusters\n",
    "silhouette_score(x, predict)"
   ],
   "id": "5c28c056dc3fad00",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "np.float64(0.49731843458090125)"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 45
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-13T10:18:40.295928Z",
     "start_time": "2025-01-13T10:18:40.283155Z"
    }
   },
   "cell_type": "code",
   "source": [
    "#改为2时的结果\n",
    "km = KMeans(n_clusters=3)\n",
    "km.fit(x)  #开始训练\n",
    "predict = km.predict(x)\n",
    "print(silhouette_score(x, predict))\n",
    "predict"
   ],
   "id": "8a27539d83e83120",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.6273140627218257\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "       0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "       0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0,\n",
       "       0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0,\n",
       "       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,\n",
       "       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "       0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 2, 2,\n",
       "       0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0,\n",
       "       0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0,\n",
       "       0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0,\n",
       "       0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 1, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0,\n",
       "       2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,\n",
       "       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 0, 0, 0,\n",
       "       0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "       2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 2, 0, 0, 0,\n",
       "       0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,\n",
       "       0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0,\n",
       "       0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "       0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2,\n",
       "       0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0,\n",
       "       0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0], dtype=int32)"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 48
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-13T10:18:46.702161Z",
     "start_time": "2025-01-13T10:18:46.697609Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 通过分类后数据，去看原始样本的特点\n",
    "cross.iloc[0]"
   ],
   "id": "5910c317007e4b9e",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "aisle\n",
       "air fresheners candles           0\n",
       "asian foods                      0\n",
       "baby accessories                 0\n",
       "baby bath body care              0\n",
       "baby food formula                0\n",
       "                                ..\n",
       "trash bags liners                0\n",
       "vitamins supplements             0\n",
       "water seltzer sparkling water    0\n",
       "white wines                      0\n",
       "yogurt                           1\n",
       "Name: 1, Length: 134, dtype: int64"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 49
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-13T10:18:55.257280Z",
     "start_time": "2025-01-13T10:18:55.252337Z"
    }
   },
   "cell_type": "code",
   "source": [
    "predict[26]\n",
    "cross.iloc[26]"
   ],
   "id": "f10e40548fcbceaa",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "aisle\n",
       "air fresheners candles             0\n",
       "asian foods                        4\n",
       "baby accessories                   0\n",
       "baby bath body care                0\n",
       "baby food formula                  0\n",
       "                                ... \n",
       "trash bags liners                  0\n",
       "vitamins supplements               0\n",
       "water seltzer sparkling water     92\n",
       "white wines                        0\n",
       "yogurt                           150\n",
       "Name: 27, Length: 134, dtype: int64"
      ]
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 51
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-13T10:18:59.638565Z",
     "start_time": "2025-01-13T10:18:59.626522Z"
    }
   },
   "cell_type": "code",
   "source": [
    "#改为3时的结果\n",
    "km = KMeans(n_clusters=3)\n",
    "km.fit(x)  #开始训练\n",
    "predict = km.predict(x)\n",
    "silhouette_score(x, predict)"
   ],
   "id": "30f1ed402c3daee9",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "np.float64(0.5161198544883194)"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 52
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-14T08:27:46.690669Z",
     "start_time": "2025-01-14T08:27:46.562164Z"
    }
   },
   "cell_type": "code",
   "source": [
    "from sklearn.cluster import DBSCAN\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.cluster import DBSCAN\n",
    "from sklearn.datasets import make_blobs\n",
    "\n",
    "# 生成样本数据\n",
    "n_samples = 1500\n",
    "random_state = 170\n",
    "X, y = make_blobs(n_samples=n_samples, random_state=random_state) #y没有用\n",
    "\n",
    "# 增加一些噪声点，往X中拼接噪声点\n",
    "rng = np.random.RandomState(74)\n",
    "X = np.concatenate([X, rng.uniform(low=-10, high=10, size=(100, 2))])\n",
    "print(X.shape) #1600个样本，2列特征，100个噪声点\n",
    "# 可视化生成的数据\n",
    "plt.scatter(X[:, 0], X[:, 1], s=10) #s表示点的大小\n",
    "plt.title(\"Generated Data with Noise\")\n",
    "plt.show()"
   ],
   "id": "e83892795e1589af",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(1600, 2)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 3
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-14T08:27:59.539651Z",
     "start_time": "2025-01-14T08:27:59.535771Z"
    }
   },
   "cell_type": "code",
   "source": "X[0:5]",
   "id": "16e244f59bf646d9",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ -5.19811282,   0.64186932],\n",
       "       [ -5.75229538,   0.41862711],\n",
       "       [-10.84489837,  -7.55352273],\n",
       "       [ -4.57098483,  -0.80101741],\n",
       "       [ -3.51916215,   0.0393449 ]])"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 4
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-14T08:28:20.526917Z",
     "start_time": "2025-01-14T08:28:20.415495Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 使用DBSCAN算法\n",
    "db = DBSCAN(eps=1.0, min_samples=4).fit(X) # eps是半径，min_samples是最少包含几个点才会被认为是核心点\n",
    "labels = db.labels_ # 得到每个点的类别\n",
    "print(np.unique(labels)) # 得到类别有-1 0 1 2 总计4个类别\n",
    "# 标签为-1的点是噪声点\n",
    "noise_mask = (labels == -1)\n",
    "print(np.sum(noise_mask)) # 噪声点的数量\n",
    "print(np.unique(labels[~noise_mask])) # 得到噪声点的mask\n",
    "# 可视化聚类结果\n",
    "plt.scatter(X[~noise_mask, 0], X[~noise_mask, 1], c=labels[~noise_mask], s=5, cmap='viridis') # 正常点用彩色标注\n",
    "plt.scatter(X[noise_mask, 0], X[noise_mask, 1], c='red', s=5, label='Noise') # 噪声点用红色标注\n",
    "plt.title(\"DBSCAN Clustering\")\n",
    "plt.legend()\n",
    "plt.show()"
   ],
   "id": "9e16e6bf1fe93860",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[-1  0  1]\n",
      "72\n",
      "[0 1]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "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C/DHF6dnpsp231toEtravivOoaW6WfdnrTVMhN/JF3K3x41riSMSSlcqgU93jFW/c2zH1lW77tHeu24BZ8qsftta6vtg543kbBOWqB6/z/xusFvQ8TV6Tn0dTd9sqFJ4JGf+HOr3/b8eUl1dHOHAKfSmh467uHohAi0LvG732KAlvVP0khI8//ztETU4n376KYoVK4agoCBUrVoV27cbuWtXLF26FGXLllXLly9fHqtXr75n+yp4Hhx3wEiKo1bf/O2OZNcLzhaMgYt7qUgN6ywKl7nPriCUkY5da/ai9GMl0WdmV7y3pJd6jL4wq2auxbsNP1COv2lpqTWLWe8WGu/NHfQ//LLMubgxr0xtW4B5gvXx802sB9EolHKregzCk9qKT1ar1mRekTP1xUGKzfsYZoectM0WelP48HDziv6yJfpAN93u1QaqFvGf5m+Et8KUlB0On//xA6fs7rN931bckL93/YMDmw9h5dTVd9RFlff+lH15XOLi5YauGIAeU19XQifFTZheOGoIbaRTAWSOK6Gw4Y1mmRTHI1tOVOnZ0a0no2+tIep76k44luXhmuWMlKwaIxGKCrUz19BYwUMFzpdffom+ffti6NCh2L17NypUqICGDRviwgUn5lM8aW3ejFdeeQWdOnXCH3/8gWbNmqnbgQNG+FfIerBQktEH24JH/qEqUSHlPD/HMay8ugCrby3B2J/et57sTTRfH9VCbnZa3Yy8lfJgShcEZw9SqSV2Kt01GjtRIpNfxEll67E/TiTWCenAyqk/JBkZQbF49ew1NO/bBIMW94Kfv59VMHL+FE+AvHKnACpcuqAShuy2GvTshziy85hqEaej7xGHGUveAiMWyfHQk2XxwcuT8H6T0SotxePn+L0ifZ4cjE97zsO273ermhau5+ij44qLp1Kf0mIdVXBYyqIlzDI+oUHbWuqn+ox9ffDu5z3tJoaz88taTO9id+lo/HRr+wntq6avSTKj7ciuf9Cj6kBVeG8OJr3X8N8Jh392HttG1d9M2zEWuQrIzCtvwO0pKkZsKleujKlTp6r7zGsXKVIEPXr0wLvvvptk+VatWuHGjRtYtSqxILNatWp49NFHMWPGjFS9pqSovA8WCc59/wucP35e1TaUf6ocen76OkLDEz1aUsucQYvxxZiVhtNsgq4Gaj5a52H8vHQzPmg16Y73MU/h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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 8
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-14T08:28:30.793425Z",
     "start_time": "2025-01-14T08:28:30.568863Z"
    }
   },
   "cell_type": "code",
   "source": [
    "\n",
    "import numpy as np\n",
    "from sklearn.ensemble import IsolationForest\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# 随机生成50个数据点\n",
    "np.random.seed(42)  # 为了结果的可重复性设置随机种子\n",
    "X = np.random.rand(50, 2)  # 2维数据,2列好画图来解释\n",
    "\n",
    "# 初始化Isolation Forest模型，contamination参数表示异常值比例，默认0.1\n",
    "iso_forest = IsolationForest(random_state=42, contamination=0.1)\n",
    "\n",
    "# 训练模型，随机建树的过程\n",
    "iso_forest.fit(X)\n",
    "\n",
    "# 预测每个点的异常分数，在树中的高度越低，越可能是异常点\n",
    "scores = iso_forest.decision_function(X)\n",
    "\n",
    "# print(scores)\n",
    "# 将异常分数转换为1（正常）和-1（异常）的标签\n",
    "labels = iso_forest.predict(X)\n",
    "# print(labels)\n",
    "# 绘制数据点和异常点\n",
    "plt.scatter(X[:, 0], X[:, 1], c=labels, cmap=plt.cm.bwr, edgecolor='k', s=50)\n",
    "plt.title('Isolation Forest Anomaly Detection')\n",
    "plt.xlabel('Feature 1')\n",
    "plt.ylabel('Feature 2')\n",
    "plt.show()"
   ],
   "id": "3b136ca9edb5d57a",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 9
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-14T08:29:58.787019Z",
     "start_time": "2025-01-14T08:29:58.775513Z"
    }
   },
   "cell_type": "code",
   "source": [
    "#把scores和labels拼接到一起\n",
    "import pandas as pd #得加上import\n",
    "df=pd.DataFrame(np.c_[X,scores,labels],columns=['Feature 1','Feature 2','scores','labels'])\n",
    "df"
   ],
   "id": "f18486c07548f964",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "    Feature 1  Feature 2    scores  labels\n",
       "0    0.374540   0.950714  0.001053     1.0\n",
       "1    0.731994   0.598658  0.100556     1.0\n",
       "2    0.156019   0.155995  0.053615     1.0\n",
       "3    0.058084   0.866176  0.050242     1.0\n",
       "4    0.601115   0.708073  0.071848     1.0\n",
       "5    0.020584   0.969910  0.004049     1.0\n",
       "6    0.832443   0.212339  0.019976     1.0\n",
       "7    0.181825   0.183405  0.062738     1.0\n",
       "8    0.304242   0.524756  0.108842     1.0\n",
       "9    0.431945   0.291229  0.078362     1.0\n",
       "10   0.611853   0.139494  0.061115     1.0\n",
       "11   0.292145   0.366362  0.084021     1.0\n",
       "12   0.456070   0.785176  0.045485     1.0\n",
       "13   0.199674   0.514234  0.078788     1.0\n",
       "14   0.592415   0.046450  0.002542     1.0\n",
       "15   0.607545   0.170524  0.080086     1.0\n",
       "16   0.065052   0.948886  0.050840     1.0\n",
       "17   0.965632   0.808397 -0.010826    -1.0\n",
       "18   0.304614   0.097672  0.064521     1.0\n",
       "19   0.684233   0.440152  0.080087     1.0\n",
       "20   0.122038   0.495177  0.046349     1.0\n",
       "21   0.034389   0.909320  0.049348     1.0\n",
       "22   0.258780   0.662522  0.065993     1.0\n",
       "23   0.311711   0.520068  0.108299     1.0\n",
       "24   0.546710   0.184854  0.074462     1.0\n",
       "25   0.969585   0.775133 -0.011208    -1.0\n",
       "26   0.939499   0.894827 -0.054237    -1.0\n",
       "27   0.597900   0.921874  0.001301     1.0\n",
       "28   0.088493   0.195983  0.025424     1.0\n",
       "29   0.045227   0.325330  0.007633     1.0\n",
       "30   0.388677   0.271349  0.076083     1.0\n",
       "31   0.828738   0.356753  0.040746     1.0\n",
       "32   0.280935   0.542696  0.098729     1.0\n",
       "33   0.140924   0.802197  0.051889     1.0\n",
       "34   0.074551   0.986887 -0.009478    -1.0\n",
       "35   0.772245   0.198716  0.058851     1.0\n",
       "36   0.005522   0.815461  0.019645     1.0\n",
       "37   0.706857   0.729007  0.059518     1.0\n",
       "38   0.771270   0.074045  0.006085     1.0\n",
       "39   0.358466   0.115869  0.064459     1.0\n",
       "40   0.863103   0.623298  0.038440     1.0\n",
       "41   0.330898   0.063558  0.031777     1.0\n",
       "42   0.310982   0.325183  0.093849     1.0\n",
       "43   0.729606   0.637557  0.097286     1.0\n",
       "44   0.887213   0.472215  0.013679     1.0\n",
       "45   0.119594   0.713245  0.041727     1.0\n",
       "46   0.760785   0.561277  0.095441     1.0\n",
       "47   0.770967   0.493796  0.091932     1.0\n",
       "48   0.522733   0.427541  0.069567     1.0\n",
       "49   0.025419   0.107891 -0.023624    -1.0"
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Feature 1</th>\n",
       "      <th>Feature 2</th>\n",
       "      <th>scores</th>\n",
       "      <th>labels</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.374540</td>\n",
       "      <td>0.950714</td>\n",
       "      <td>0.001053</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.731994</td>\n",
       "      <td>0.598658</td>\n",
       "      <td>0.100556</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.156019</td>\n",
       "      <td>0.155995</td>\n",
       "      <td>0.053615</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.058084</td>\n",
       "      <td>0.866176</td>\n",
       "      <td>0.050242</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.601115</td>\n",
       "      <td>0.708073</td>\n",
       "      <td>0.071848</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>0.020584</td>\n",
       "      <td>0.969910</td>\n",
       "      <td>0.004049</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>0.832443</td>\n",
       "      <td>0.212339</td>\n",
       "      <td>0.019976</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>0.181825</td>\n",
       "      <td>0.183405</td>\n",
       "      <td>0.062738</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>0.304242</td>\n",
       "      <td>0.524756</td>\n",
       "      <td>0.108842</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>0.431945</td>\n",
       "      <td>0.291229</td>\n",
       "      <td>0.078362</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>0.611853</td>\n",
       "      <td>0.139494</td>\n",
       "      <td>0.061115</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>0.292145</td>\n",
       "      <td>0.366362</td>\n",
       "      <td>0.084021</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>0.456070</td>\n",
       "      <td>0.785176</td>\n",
       "      <td>0.045485</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>0.199674</td>\n",
       "      <td>0.514234</td>\n",
       "      <td>0.078788</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>0.592415</td>\n",
       "      <td>0.046450</td>\n",
       "      <td>0.002542</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>0.607545</td>\n",
       "      <td>0.170524</td>\n",
       "      <td>0.080086</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>0.065052</td>\n",
       "      <td>0.948886</td>\n",
       "      <td>0.050840</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>0.965632</td>\n",
       "      <td>0.808397</td>\n",
       "      <td>-0.010826</td>\n",
       "      <td>-1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>0.304614</td>\n",
       "      <td>0.097672</td>\n",
       "      <td>0.064521</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>0.684233</td>\n",
       "      <td>0.440152</td>\n",
       "      <td>0.080087</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>0.122038</td>\n",
       "      <td>0.495177</td>\n",
       "      <td>0.046349</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>0.034389</td>\n",
       "      <td>0.909320</td>\n",
       "      <td>0.049348</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>0.258780</td>\n",
       "      <td>0.662522</td>\n",
       "      <td>0.065993</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>0.311711</td>\n",
       "      <td>0.520068</td>\n",
       "      <td>0.108299</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>0.546710</td>\n",
       "      <td>0.184854</td>\n",
       "      <td>0.074462</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>0.969585</td>\n",
       "      <td>0.775133</td>\n",
       "      <td>-0.011208</td>\n",
       "      <td>-1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>0.939499</td>\n",
       "      <td>0.894827</td>\n",
       "      <td>-0.054237</td>\n",
       "      <td>-1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>0.597900</td>\n",
       "      <td>0.921874</td>\n",
       "      <td>0.001301</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>0.088493</td>\n",
       "      <td>0.195983</td>\n",
       "      <td>0.025424</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>0.045227</td>\n",
       "      <td>0.325330</td>\n",
       "      <td>0.007633</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>0.388677</td>\n",
       "      <td>0.271349</td>\n",
       "      <td>0.076083</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>31</th>\n",
       "      <td>0.828738</td>\n",
       "      <td>0.356753</td>\n",
       "      <td>0.040746</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32</th>\n",
       "      <td>0.280935</td>\n",
       "      <td>0.542696</td>\n",
       "      <td>0.098729</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>33</th>\n",
       "      <td>0.140924</td>\n",
       "      <td>0.802197</td>\n",
       "      <td>0.051889</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>34</th>\n",
       "      <td>0.074551</td>\n",
       "      <td>0.986887</td>\n",
       "      <td>-0.009478</td>\n",
       "      <td>-1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35</th>\n",
       "      <td>0.772245</td>\n",
       "      <td>0.198716</td>\n",
       "      <td>0.058851</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>36</th>\n",
       "      <td>0.005522</td>\n",
       "      <td>0.815461</td>\n",
       "      <td>0.019645</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>37</th>\n",
       "      <td>0.706857</td>\n",
       "      <td>0.729007</td>\n",
       "      <td>0.059518</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>38</th>\n",
       "      <td>0.771270</td>\n",
       "      <td>0.074045</td>\n",
       "      <td>0.006085</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>39</th>\n",
       "      <td>0.358466</td>\n",
       "      <td>0.115869</td>\n",
       "      <td>0.064459</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>40</th>\n",
       "      <td>0.863103</td>\n",
       "      <td>0.623298</td>\n",
       "      <td>0.038440</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>41</th>\n",
       "      <td>0.330898</td>\n",
       "      <td>0.063558</td>\n",
       "      <td>0.031777</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>42</th>\n",
       "      <td>0.310982</td>\n",
       "      <td>0.325183</td>\n",
       "      <td>0.093849</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>43</th>\n",
       "      <td>0.729606</td>\n",
       "      <td>0.637557</td>\n",
       "      <td>0.097286</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>44</th>\n",
       "      <td>0.887213</td>\n",
       "      <td>0.472215</td>\n",
       "      <td>0.013679</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>45</th>\n",
       "      <td>0.119594</td>\n",
       "      <td>0.713245</td>\n",
       "      <td>0.041727</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>46</th>\n",
       "      <td>0.760785</td>\n",
       "      <td>0.561277</td>\n",
       "      <td>0.095441</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>47</th>\n",
       "      <td>0.770967</td>\n",
       "      <td>0.493796</td>\n",
       "      <td>0.091932</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>48</th>\n",
       "      <td>0.522733</td>\n",
       "      <td>0.427541</td>\n",
       "      <td>0.069567</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>49</th>\n",
       "      <td>0.025419</td>\n",
       "      <td>0.107891</td>\n",
       "      <td>-0.023624</td>\n",
       "      <td>-1.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 11
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-14T08:30:17.621672Z",
     "start_time": "2025-01-14T08:30:17.617358Z"
    }
   },
   "cell_type": "code",
   "source": "labels[labels==-1]",
   "id": "6018fab208b10209",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([-1, -1, -1, -1, -1])"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 12
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
